package ui.robots_wicket;

import org.apache.wicket.Page;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PropertyListView;
import org.apache.wicket.model.PropertyModel;

import unq.uis.robots.applicationsModels.JugadorVista;
import unq.uis.robots.applicationsModels.RobotVista;
import unq.uis.robots.model.MejoraDeRobot;
import unq.uis.robots.model.Robot;

public class MejorarPage extends WebPage {
	private static final long serialVersionUID = 1L;

	private JugadorVista jugadorVista;
	private RobotVista robotVista;
	private Page vistaAnterior;

	public MejorarPage(Page vistaAnterior, JugadorVista jugadorVista, Robot robot) {
		this.vistaAnterior = vistaAnterior;
		this.jugadorVista = jugadorVista;
		this.robotVista = new RobotVista(robot);
		this.agregarLabels();
		this.listarMejoras();
		this.botones();
	}


	private void botones() {
		this.add(new Link<WebPage>("volver"){
			private static final long serialVersionUID = 1L;

			public void onClick() {
				this.setResponsePage(vistaAnterior);
			};
		}
		);
	}


	private void listarMejoras() {
		this.add(new PropertyListView<MejoraDeRobot>("mejoras", this.robotVista.getMejorasDisponibles()) {
			private static final long serialVersionUID = 1L;

			@Override
			protected void populateItem(ListItem<MejoraDeRobot> item) {				
				item.add(new Label("descripcion"));
				item.add(new Label("precio"));
				item.add(new Label("puntosDePoder"));

				final MejoraDeRobot mejoraSeleccionada = item.getModelObject();
				item.add(new Link<WebPage>("mejorar"){
					private static final long serialVersionUID = 1L;

					public void onClick() {
						MejorarPage.this.robotVista.setMejoraSeleccionada(mejoraSeleccionada);
						MejorarPage.this.robotVista.mejorarRobot();
						this.setResponsePage(vistaAnterior);
					};
				}
				);
			}
		});
	}

	private void agregarLabels() {
		this.add(new Label("nombreJugador", new PropertyModel<String>(jugadorVista, "nombre")));
		this.add(new Label("dineroJugador", new PropertyModel<Integer>(jugadorVista, "dinero")));
		this.add(new Label("nombreRobot", new PropertyModel<String>(this.robotVista, "nombreRobot")));
		this.add(new Label("poderRobot", new PropertyModel<Integer>(robotVista,"poder")));	
	}

}
